1. Field of the Invention
The present invention relates generally to methods and apparatuses for load balancing incoming connections based on a source IP address. More specifically, the invention relates to creating a connection object that contains an IP address and port number corresponding to a physical machine that handles a connection from outside based on the IP address of the outside machine making the connection.
2. Description of the Related Art
With the recent explosive growth of the Internet, a very large percentage of businesses, including many small businesses, desire to have an Internet site that is dedicated to them. An Internet site is generally implemented on an Internet server which is connected to the Internet via an Internet service provider (ISP). Some Internet sites are busy enough to require a plurality of servers in order to handle all of the connections which are made to those sites. Accordingly, co-pending application Ser. No. 08/850,248 describes a system and method for monitoring the availability of servers at an Internet site which simulate a virtual server and distributing new connection requests to servers which are available for connections and which are likely to have faster response times.
For less visited sites, the opposite situation is presented. Instead of one site requiring a plurality of servers, it would be desirable to combine a plurality of sites on a single server, since each one of the individual sites would not require all of the capacity of the server in order to service its connection traffic. It is also true that Internet traffic tends to be distributed among sites in a manner which is nonhomogenous. That is, certain sites receive a very large quantity of traffic while others receive little or no traffic. Furthermore, traffic on certain sites may increase or decrease unpredictably. Accordingly, co-pending application Ser. No. 08/850,730 describes a system and method for sharing connection load among a group of servers in a manner that allows each server to service more than one site and multiple servers to share the load for individual sites.
In a situation where a number of web servers are configured to service a website, it is possible that a number of different Clients will want to access the site via the Internet. It should be noted that the terms "Client" and "server" are used herein for the purpose of example only and that the roles of Client and server may be reversed in certain applications within the spirit and scope of the present invention. It would be desirable if different levels of service could be provided to different Clients without necessarily partitioning the different web servers in a rigid way such as allocating certain web servers to certain Clients. It would be most desirable if all web servers could be available for all Clients but certain Clients could have priority both in the quality of server to which their connections are assigned and in how quickly their connections are assigned to a server.
Therefore, in addition to distributing connections among a group of servers based on a determination of which server is best able to handle the connection, it would also be useful if different connections could be distributed among different sets of servers based on the source of an incoming connection request. Specifically, it would be most useful if various outside entities or Clients could be selectively granted access to sets of servers providing different classes of service based on the class of service subscribed to by each outside entity. Also, it would be useful if different outside entities could be directed to different servers or ports running special processes intended for specific entities. For example, it might be desirable to provide a special welcome page to visitors from certain preferred companies. In other situations, it might be desirable to provide a special not welcome page to site abusers who are unwelcome either because they appear to be repeatedly connecting to the server in a malicious attempt to keep the server busy or because the Client has been determined to be undesirable for some other reason. It would also be useful if Client connections could be assigned to a particular server based on the type of traffic generated by the Client or the frequency of traffic generated by the Client.
What is needed, therefore, is an apparatus and method for assigning connections using load balancing and also for providing access to different groups of servers or ports based on the identity of the outside entity attempting to establish a connection. Such a system would could ideally integrate load balancing of connections among a group of web servers with discriminating between Clients based on the identity of the Client or the behavior of the Client. Such a system would make possible a scheme where Clients could be assigned to different levels of service but where all Clients could be serviced by all available web servers if the servers happen to be available. In addition, a way of sending site abusers a not welcome page when they attempt to connect to the site is needed. Also, it may be desirable to welcome particular Clients who are customers from a particular company with a special welcome page.